def merge_sort(li):
    n = len(li)
    if n == 1:
        return li
    #把数据分成左右两部分
    mid = n // 2
    left = li[:mid]
    right = li[mid:]
    #递归拆分
    left_res = merge_sort(left)
    right_res = merge_sort(right)
    #把下层返回上来的数据，组成有序序列
    result = merge(left_res, right_res)
    #合并
    return result